//using System;
//using System.Collections;
//using System.Runtime.InteropServices;
//using UnityEngine;
//using UnityEngine.Networking;

//namespace UnityX.WeiXin
//{
//    public static class WeChat
//    {
//#if UNITY_ANDROID
//    public const string AppId = "wx311d385390ebc0ae";
//    public const string AppSecret = "1ed2da200583e55fd5ec795fcb742b82";
//#elif UNITY_IOS
//    public const string AppId = "wxf645531f16d2a894";
//    public const string AppSecret = "cf1f9ba2f13a7da33e9079961e8a2b79";
//    public const string UniversalLink = @"https://www.starpainters.cn/hhlwx/";
//#else
//        public const string AppId = "";
//        public const string AppSecret = "";
//#endif

//#if UNITY_IOS
//    [DllImport("__Internal")]
//    private static extern void Auth(string appId, string universalLink);
//    [DllImport("__Internal")]
//    private static extern int GetState();
//    [DllImport("__Internal")]
//    private static extern string GetResult();
//#endif

//        //public static void GetAccessToken(Action<AccessToken> actoin)
//        //{
//        //    UnityLoop.StartCoroutine(AccessTokenResult(actoin));
//        //}
//        //public static void GetUserinfo(Action<Userinfo> actoin)
//        //{
//        //    UnityLoop.StartCoroutine(UserinfoResult(actoin));
//        //}
//        //public static void GetHeadimg(string headimgurl, Action<Texture2D> actoin)
//        //{
//        //    UnityLoop.StartCoroutine(HeadimgResult(headimgurl, actoin));
//        //}
//        private static IEnumerator AccessTokenResult(Action<AccessToken> actoin)
//        {
//            int state = 0;
//            string result = "超时";
//#if UNITY_ANDROID
//        AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
//        AndroidJavaObject currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
//        AndroidJavaClass WXEntryActivity = new AndroidJavaClass("com.xq.hhl.wxapi.WXEntryActivity");
//        WXEntryActivity.SetStatic("APP_ID", AppId);
//        WXEntryActivity.CallStatic("Auth", currentActivity);
//        for (int i = 0; i < 3000; i++)
//        {
//            state = WXEntryActivity.GetStatic<int>("State");
//            if (state != 1)
//            {
//                result = WXEntryActivity.GetStatic<string>("Result");
//                break;
//            }
//            yield return 0.1f;
//        }
//#elif UNITY_IOS
//        Auth(AppId, UniversalLink);
//        for (int i = 0; i < 3000; i++)
//        {
//            state = GetState();
//            if (state != 1)
//            {
//                result = GetResult();
//                break;
//            }
//            yield return 0.1f;
//        }
//#endif
//            if (state != 2)
//            {
//                Debug.LogError(result);
//                actoin(null);
//                yield break;
//            }
//            AccessToken accessToken = null;
//            using (UnityWebRequest webRequest = UnityWebRequest.Get(@"https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + AppId + "&secret=" + AppSecret + "&code=" + result + "&grant_type=authorization_code"))
//            {
//                yield return webRequest.SendWebRequest();
//                if (webRequest.result == UnityWebRequest.Result.Success)
//                {
//                    string text = webRequest.downloadHandler.text;
//                    try
//                    {
//                        accessToken = JsonUtility.FromJson<AccessToken>(text);
//                    }
//                    catch
//                    {
//                        Debug.LogError("通过 Code 获取 AccessToken 出错");
//                    }
//                }
//                else
//                {
//                    Debug.LogError("通过 Code 获取 AccessToken 出错");
//                }
//            }
//            actoin(accessToken);
//        }
//        private static IEnumerator UserinfoResult(Action<Userinfo> actoin)
//        {
//            int state = 0;
//            string result = "超时";
//#if UNITY_ANDROID
//        AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
//        AndroidJavaObject currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
//        AndroidJavaClass WXEntryActivity = new AndroidJavaClass("com.xq.hhl.wxapi.WXEntryActivity");
//        WXEntryActivity.SetStatic("APP_ID", AppId);
//        WXEntryActivity.CallStatic("Auth", currentActivity);
//        for (int i = 0; i < 3000; i++)
//        {
//            state = WXEntryActivity.GetStatic<int>("State");
//            if (state != 1)
//            {
//                result = WXEntryActivity.GetStatic<string>("Result");
//                break;
//            }
//            yield return 0.1f;
//        }
//#elif UNITY_IOS
//        Auth(AppId, UniversalLink);
//        for (int i = 0; i < 3000; i++)
//        {
//            state = GetState();
//            if (state != 1)
//            {
//                result = GetResult();
//                break;
//            }
//            yield return 0.1f;
//        }
//#endif
//            if (state != 2)
//            {
//                Debug.LogError(result);
//                actoin(null);
//                yield break;
//            }
//            AccessToken accessToken = null;
//            using (UnityWebRequest webRequest = UnityWebRequest.Get(@"https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + AppId + "&secret=" + AppSecret + "&code=" + result + "&grant_type=authorization_code"))
//            {
//                yield return webRequest.SendWebRequest();
//                if (webRequest.result == UnityWebRequest.Result.Success)
//                {
//                    string text = webRequest.downloadHandler.text;
//                    try
//                    {
//                        accessToken = JsonUtility.FromJson<AccessToken>(text);
//                    }
//                    catch
//                    {
//                        Debug.LogError("通过 Code 获取 AccessToken 出错");
//                    }
//                }
//                else
//                {
//                    Debug.LogError("通过 Code 获取 AccessToken 出错");
//                }
//            }

//            Userinfo userinfo = null;
//            using (UnityWebRequest webRequest = UnityWebRequest.Get(@"https://api.weixin.qq.com/sns/userinfo?access_token=" + accessToken.access_token + "&openid=" + accessToken.openid))
//            {
//                yield return webRequest.SendWebRequest();
//                if (webRequest.result == UnityWebRequest.Result.Success)
//                {
//                    string text = webRequest.downloadHandler.text;
//                    try
//                    {
//                        userinfo = JsonUtility.FromJson<Userinfo>(text);
//                    }
//                    catch
//                    {
//                        Debug.LogError("通过 AccessToken 获取 Userinfo 出错");
//                    }
//                }
//                else
//                {
//                    Debug.LogError("通过 AccessToken 获取 Userinfo 出错");
//                }
//            }
//            actoin(userinfo);
//        }

//        private static IEnumerator HeadimgResult(string headimgurl, Action<Texture2D> actoin)
//        {
//            Texture2D texture2D = null;
//            using (UnityWebRequest webRequest = UnityWebRequestTexture.GetTexture(headimgurl))
//            {
//                yield return webRequest.SendWebRequest();
//                if (webRequest.result == UnityWebRequest.Result.Success)
//                {
//                    texture2D = DownloadHandlerTexture.GetContent(webRequest);
//                }
//                else
//                {
//                    Debug.LogError(webRequest.error);
//                }
//            }
//            actoin(texture2D);
//        }
//    }
//}